Skip to content

linux service服务配置

Tags:
🕒 Published at: 9 months ago

参考文档 https://blog.csdn.net/blood_Z/article/details/128848056

默认配置路径

shell
1. /etc/systemd/system/

# 这个目录是Systemd服务管理器的主要配置目录。在这个目录中,可以找到各种系统服务的配置文件,
# 这些文件以.service为后缀名。
# 例如,一个名为"my-service.service"的服务配置文件将存放在/etc/systemd/system/目录下。


2. /lib/systemd/system/
# 这个目录也是Systemd服务管理器的配置目录,
# 但是与/etc/systemd/system/目录不同的是,
# 这个目录中的服务配置文件通常是由Linux发行版提供的默认服务。
# 这个目录中的服务文件一般不建议用户直接修改,以免对系统造成不可预料的影响。
1. /etc/systemd/system/

# 这个目录是Systemd服务管理器的主要配置目录。在这个目录中,可以找到各种系统服务的配置文件,
# 这些文件以.service为后缀名。
# 例如,一个名为"my-service.service"的服务配置文件将存放在/etc/systemd/system/目录下。


2. /lib/systemd/system/
# 这个目录也是Systemd服务管理器的配置目录,
# 但是与/etc/systemd/system/目录不同的是,
# 这个目录中的服务配置文件通常是由Linux发行版提供的默认服务。
# 这个目录中的服务文件一般不建议用户直接修改,以免对系统造成不可预料的影响。

常用管理命令

shell
#常用命令
systemctl start 服务名                       开启服务
systemctl stop 服务名                        关闭服务
systemctl status 服务名                      显示状态
systemctl restart 服务名                     重启服务
systemctl enable 服务名                      开机启动服务
systemctl disable 服务名                     禁止开机启动
systemctl list-units                        查看系统中所有正在运行的服务
systemctl list-unit-files                   查看系统中所有服务的开机启动状态
systemctl list-dependencies 服务名           查看系统中服务的依赖关系
systemctl mask 服务名                        冻结服务
systemctl unmask 服务名                      解冻服务
systemctl set-default multi-user.target     开机时不启动图形界面
systemctl set-default graphical.target      开机时启动图形界面

systemctl daemon-reload  重载服务配置

systemctl enable 服务名.service 

systemctl is-enabled 服务名.service

journalctl -u xxx.service                   **查看服务运行日志**

取消服务器开机自启动
systemctl disable postgresql.service
#常用命令
systemctl start 服务名                       开启服务
systemctl stop 服务名                        关闭服务
systemctl status 服务名                      显示状态
systemctl restart 服务名                     重启服务
systemctl enable 服务名                      开机启动服务
systemctl disable 服务名                     禁止开机启动
systemctl list-units                        查看系统中所有正在运行的服务
systemctl list-unit-files                   查看系统中所有服务的开机启动状态
systemctl list-dependencies 服务名           查看系统中服务的依赖关系
systemctl mask 服务名                        冻结服务
systemctl unmask 服务名                      解冻服务
systemctl set-default multi-user.target     开机时不启动图形界面
systemctl set-default graphical.target      开机时启动图形界面

systemctl daemon-reload  重载服务配置

systemctl enable 服务名.service 

systemctl is-enabled 服务名.service

journalctl -u xxx.service                   **查看服务运行日志**

取消服务器开机自启动
systemctl disable postgresql.service

service文件编写

shell
# 基本模版
[Unit]
Description=My Service
After=network.target

[Service]
Type=simple
ExecStart=/path/to/your/command
Restart=always

[Install]
WantedBy=multi-user.target
# 基本模版
[Unit]
Description=My Service
After=network.target

[Service]
Type=simple
ExecStart=/path/to/your/command
Restart=always

[Install]
WantedBy=multi-user.target

一键配置service启动项的shell脚本

需要将其中的路径替换为自己系统需要配置的路径

shell
#!/bin/bash

# 确保脚本以 root 用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请以 root 用户或使用 sudo 运行此脚本。"
    exit 1
fi

# 定义路径变量
SCRIPT_PATH="/home/firefly/Desktop/hackrf_build"
SERVICE_NAME="hackrf_signal"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
#START_SCRIPT="${SCRIPT_PATH}/zjyg_signal/sweep-back.py"
START_SCRIPT="${SCRIPT_PATH}/run.sh"

# 赋予启动脚本执行权限
chmod +x ${START_SCRIPT}
echo "启动脚本已创建并赋予执行权限: ${START_SCRIPT}"

# 创建 systemd 服务文件
echo "创建 systemd 服务文件..."
cat <<EOL > ${SERVICE_FILE}
[Unit]
Description=hackrf_signal
After=network.target

[Service]
Type=simple
WorkingDirectory=${SCRIPT_PATH}
User=root
ExecStart=${START_SCRIPT}
Restart=always

[Install]
WantedBy=multi-user.target

EOL

# 重新加载 systemd,启用并启动服务
echo "重新加载 systemd 守护进程..."
systemctl daemon-reload
echo "启用服务..."
systemctl enable ${SERVICE_NAME}.service
echo "启动服务..."
systemctl start ${SERVICE_NAME}.service

# 检查服务状态
echo "检查服务状态..."
systemctl status ${SERVICE_NAME}.service

echo "配置完成!'sweep-backy.py' 将在系统启动时自动运行。"
#!/bin/bash

# 确保脚本以 root 用户运行
if [ "$(id -u)" -ne 0 ]; then
    echo "请以 root 用户或使用 sudo 运行此脚本。"
    exit 1
fi

# 定义路径变量
SCRIPT_PATH="/home/firefly/Desktop/hackrf_build"
SERVICE_NAME="hackrf_signal"
SERVICE_FILE="/etc/systemd/system/${SERVICE_NAME}.service"
#START_SCRIPT="${SCRIPT_PATH}/zjyg_signal/sweep-back.py"
START_SCRIPT="${SCRIPT_PATH}/run.sh"

# 赋予启动脚本执行权限
chmod +x ${START_SCRIPT}
echo "启动脚本已创建并赋予执行权限: ${START_SCRIPT}"

# 创建 systemd 服务文件
echo "创建 systemd 服务文件..."
cat <<EOL > ${SERVICE_FILE}
[Unit]
Description=hackrf_signal
After=network.target

[Service]
Type=simple
WorkingDirectory=${SCRIPT_PATH}
User=root
ExecStart=${START_SCRIPT}
Restart=always

[Install]
WantedBy=multi-user.target

EOL

# 重新加载 systemd,启用并启动服务
echo "重新加载 systemd 守护进程..."
systemctl daemon-reload
echo "启用服务..."
systemctl enable ${SERVICE_NAME}.service
echo "启动服务..."
systemctl start ${SERVICE_NAME}.service

# 检查服务状态
echo "检查服务状态..."
systemctl status ${SERVICE_NAME}.service

echo "配置完成!'sweep-backy.py' 将在系统启动时自动运行。"

Last updated: